<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!-- 
	Copyright (C) 2007, 2008, 2009, 2010, 2011. PARP Research Group.
	<http://perception.inf.um.es>
	University of Murcia, Spain.

	This file is part of the QVision library.

	QVision is free software: you can redistribute it and/or modify
	it under the terms of the GNU Lesser General Public License as
	published by the Free Software Foundation, version 3 of the License.

	QVision is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with QVision. If not, see <http://www.gnu.org/licenses/>.
-->

<html><head><meta http-equiv="content-Type" content="text/html;charset=UTF-8">
<title>QVision: Qt&#39;s Image, Video and Computer Vision Library</title>
<meta name="title" content="QVision" />
<meta name="dc.title" content="QVision" />
<meta name="url" content="http://perception.inf.um.es/QVision" />
<meta name="author" content="PARP Research Group - http://perception.inf.um.es" />
<meta name="revisit-after" content="30 DAYS"/>
<meta name="robots" content="index,follow"/>
<meta name="classification" content="*">
<meta name="rating" content="Safe For Kids">
<meta name="distribution" content="GLOBAL"/>
<meta name="description" content="Qt's Image, Video and Computer Vision Library"/>
<meta name="page-topic" content="Computer Vision research and prototype programming"/>
<meta name="geo.country" content="ES" />

<!--
Keywords:
By license:		open source, gnu, lgpl, gpl, free
By theme:		computer vision, image processing, robotics, programming, source, development
By usage:		library, toolkit, framework, prototype, application
By programming specs:	object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping
Interoperability with:	Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack
Functionallity:		image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface
Main data-types:	matrix, vector, tensor, quaternion, image, polyline
Video sources:		webcam, camera, stream
Devices:		embedded, desktop computer, laptop, mini-laptop
Authors:		PARP research group. University of Murcia, Spain.
-->

<meta name="keywords" content="augmented reality, sfm, structure from motion, open source, gnu, lgpl, gpl, free, computer vision, image processing, robotics, programming, source, development, library, toolkit, framework, prototype, application, object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping, Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack, image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface, matrix, vector, tensor, quaternion, image, polyline, webcam, camera, stream, embedded, desktop computer, laptop, mini-laptop, University of Murcia, Spain, PARP research group, vision por computador"/>
<meta http-equiv="keywords" content="augmented reality, sfm, structure from motion, open source, gnu, lgpl, gpl, free, computer vision, image processing, robotics, programming, source, development, library, toolkit, framework, prototype, application, object oriented, c++, block programming, reusability, gui, graphical, parallel computing, high performance, GPU, prototyping, Qt, GSL, GNU Scientific library, OpenCV, CGAL, QWT, CUDA, mplayer, IPP, Intel Image Performance Primitives, blas, lapack, image features, matrix algebra, projective geometry, mser, function minimization, function optimization, canny operator, harris operator, corner detection, performance evaluation, cpu usage, graphical interface, matrix, vector, tensor, quaternion, image, polyline, webcam, camera, stream, embedded, desktop computer, laptop, mini-laptop, University of Murcia, Spain, PARP research group, vision por computador"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="title" content="QVision"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="tabs.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="favicon.ico" />
</head><body>

<table width="100%"><tr>
	<td><a href="http://perception.inf.um.es/"><img src="parp.png" border="0" /> <big>PARP Research Group</big></a></td>
	<td align="right"><a href="http://www.um.es/"><big>Universidad de Murcia</big> <img src="um.png" border="0" /></a></td>
</tr></table>

<hr /><br />

<table width="95%" align="center"><tr><td>

<!-- Generated by Doxygen 1.6.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <form id="FSearchBox" action="search.php" method="get">
            <img id="MSearchSelect" src="search/search.png" alt=""/>
            <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                   onfocus="searchBox.OnSearchFieldFocus(true)" 
                   onblur="searchBox.OnSearchFieldFocus(false)"/>
          </form>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>src/qvblockprogramming/qvguiblocks/qvdefaultgui.cpp</h1><a href="qvdefaultgui_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> *      Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012. PARP Research Group.</span>
<a name="l00003"></a>00003 <span class="comment"> *      &lt;http://perception.inf.um.es&gt;</span>
<a name="l00004"></a>00004 <span class="comment"> *      University of Murcia, Spain.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> *      This file is part of the QVision library.</span>
<a name="l00007"></a>00007 <span class="comment"> *</span>
<a name="l00008"></a>00008 <span class="comment"> *      QVision is free software: you can redistribute it and/or modify</span>
<a name="l00009"></a>00009 <span class="comment"> *      it under the terms of the GNU Lesser General Public License as</span>
<a name="l00010"></a>00010 <span class="comment"> *      published by the Free Software Foundation, version 3 of the License.</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> *      QVision is distributed in the hope that it will be useful,</span>
<a name="l00013"></a>00013 <span class="comment"> *      but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00014"></a>00014 <span class="comment"> *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00015"></a>00015 <span class="comment"> *      GNU Lesser General Public License for more details.</span>
<a name="l00016"></a>00016 <span class="comment"> *</span>
<a name="l00017"></a>00017 <span class="comment"> *      You should have received a copy of the GNU Lesser General Public</span>
<a name="l00018"></a>00018 <span class="comment"> *      License along with QVision. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
<a name="l00019"></a>00019 <span class="comment"> */</span>
<a name="l00020"></a>00020 
<a name="l00024"></a>00024 
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;QDialog&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;QTextEdit&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;QFont&gt;</span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;QVDefaultGUI&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;QVVideoReaderBlock&gt;</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;QVImageCanvas&gt;</span>
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 <span class="preprocessor">#ifdef GSL_AVAILABLE</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#include &lt;QV3DCanvas&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#endif</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &quot;<a class="code" href="qvplot_8h.html" title="File from the QVision library.">qvplot.h</a>&quot;</span>
<a name="l00038"></a>00038 <span class="preprocessor">#include &quot;<a class="code" href="qvparamsinspectorwidget_8h.html" title="File from the QVision library.">qvparamsinspectorwidget.h</a>&quot;</span>
<a name="l00039"></a>00039 <span class="preprocessor">#include &quot;<a class="code" href="qvblockinterfacesmall_8h.html" title="File from the QVision library.">qvblockinterfacesmall.h</a>&quot;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &quot;<a class="code" href="qvvideoreaderblockwidget_8h.html" title="File from the QVision library.">qvvideoreaderblockwidget.h</a>&quot;</span>
<a name="l00041"></a>00041 
<a name="l00042"></a><a class="code" href="classQVDefaultGUI.html#a571b5d5e73ef8f174cbf9e9407ea7561">00042</a> <a class="code" href="classQVDefaultGUI.html#a571b5d5e73ef8f174cbf9e9407ea7561" title="Constructs a QVDefaultGUI object.">QVDefaultGUI::QVDefaultGUI</a>(QWidget *parent): QWidget(parent)
<a name="l00043"></a>00043     {
<a name="l00044"></a>00044     <span class="keywordflow">if</span> (qvApp == NULL)
<a name="l00045"></a>00045         {
<a name="l00046"></a>00046         QString str =   <span class="stringliteral">&quot;QVDefaultGUI::QVDefaultGUI(): the QVDefaultGUI cannot be created before the QVApplication instance. Aborting now.&quot;</span>;
<a name="l00047"></a>00047         std::cerr &lt;&lt; qPrintable(str) &lt;&lt; std::endl;
<a name="l00048"></a>00048         exit(1);
<a name="l00049"></a>00049         }
<a name="l00050"></a>00050 
<a name="l00051"></a>00051     <span class="comment">// If its a --help call, do nothing:</span>
<a name="l00052"></a>00052     <span class="keywordflow">if</span> (qvApp-&gt;forHelp()) <span class="keywordflow">return</span>;
<a name="l00053"></a>00053 
<a name="l00054"></a>00054     <span class="comment">// On closing, quit application:</span>
<a name="l00055"></a>00055     connect(<span class="keyword">this</span>,SIGNAL(closed()),qvApp,SLOT(quit()));
<a name="l00056"></a>00056 
<a name="l00057"></a>00057     <span class="comment">// Window title</span>
<a name="l00058"></a>00058     setWindowTitle(<span class="stringliteral">&quot;QVision default GUI for &quot;</span> + qApp-&gt;applicationName());
<a name="l00059"></a>00059 
<a name="l00060"></a>00060     <span class="comment">// Lay out menu bar, and cameras and block groupbox vertically:</span>
<a name="l00061"></a>00061     vboxlayout = <span class="keyword">new</span> QVBoxLayout(<span class="keyword">this</span>);
<a name="l00062"></a>00062     menubar = <span class="keyword">new</span> QMenuBar(<span class="keyword">this</span>);
<a name="l00063"></a>00063     windowmenu = <span class="keyword">new</span> QMenu(<span class="stringliteral">&quot;&amp;Window&quot;</span>,menubar);
<a name="l00064"></a>00064     QAction *quit_action = menubar-&gt;addAction(<span class="stringliteral">&quot;&amp;Quit&quot;</span>);
<a name="l00065"></a>00065     connect(quit_action,SIGNAL(triggered()),qvApp,SLOT(quit()));
<a name="l00066"></a>00066     menubar-&gt;addMenu(windowmenu);
<a name="l00067"></a>00067     QAction *help_action = menubar-&gt;addAction(<span class="stringliteral">&quot;&amp;Help&quot;</span>);
<a name="l00068"></a>00068     connect(help_action,SIGNAL(triggered()),<span class="keyword">this</span>,SLOT(showHelp()));
<a name="l00069"></a>00069 
<a name="l00070"></a>00070     <span class="comment">// Register GUI in QVApplication:</span>
<a name="l00071"></a>00071     qvApp-&gt;registerGUI(<span class="keyword">this</span>);
<a name="l00072"></a>00072     }
<a name="l00073"></a>00073 
<a name="l00074"></a>00074 <span class="keywordtype">void</span> QVDefaultGUI::showHelp()
<a name="l00075"></a>00075     {
<a name="l00076"></a>00076     QDialog dialog;
<a name="l00077"></a>00077     QString help_string = <a class="code" href="classQVApplication.html#aac25e39c09253a1e5913b92d7dee8df7" title="Gets a pointer to the only QVApplication instance.">QVApplication::instance</a>()-&gt;<a class="code" href="classQVApplication.html#a29268a90a2e72f550f1143e239e2e3e7" title="Gets help for a QVApplication.">getHelp</a>().trimmed();
<a name="l00078"></a>00078     dialog.setWindowTitle(<span class="stringliteral">&quot;QVision help for &quot;</span> + qApp-&gt;applicationName());
<a name="l00079"></a>00079     QVBoxLayout vboxlayout(&amp;dialog);
<a name="l00080"></a>00080     QTextEdit textedit;
<a name="l00081"></a>00081     QFont font(<span class="stringliteral">&quot;Courier&quot;</span>);
<a name="l00082"></a>00082     textedit.setReadOnly(TRUE);
<a name="l00083"></a>00083     textedit.setFont(font);
<a name="l00084"></a>00084     textedit.setPlainText(help_string);
<a name="l00085"></a>00085     QFontMetrics fontmetrics = textedit.font();
<a name="l00086"></a>00086     <span class="keywordtype">int</span> w = qMin(fontmetrics.size(0,help_string).width() + 30,800);
<a name="l00087"></a>00087     <span class="keywordtype">int</span> h = qMin(fontmetrics.size(0,help_string).height() + 30,500);
<a name="l00088"></a>00088     textedit.setMinimumSize(QSize(w,h));
<a name="l00089"></a>00089     vboxlayout.addWidget(&amp;textedit);
<a name="l00090"></a>00090     QPushButton button(<span class="stringliteral">&quot;OK&quot;</span>);
<a name="l00091"></a>00091     QHBoxLayout hboxlayout;
<a name="l00092"></a>00092     hboxlayout.addStretch();
<a name="l00093"></a>00093     hboxlayout.addWidget(&amp;button);
<a name="l00094"></a>00094     hboxlayout.addStretch();
<a name="l00095"></a>00095     vboxlayout.addLayout(&amp;hboxlayout);
<a name="l00096"></a>00096     connect(&amp;button,SIGNAL(pressed()),&amp;dialog,SLOT(close()));
<a name="l00097"></a>00097     dialog.exec();
<a name="l00098"></a>00098     }
<a name="l00099"></a>00099 
<a name="l00100"></a>00100 <span class="keywordtype">void</span> <a class="code" href="classQVGUI.html#a73873873373076c825c28a86d8b19f58" title="initialice the QVGUI object.">QVDefaultGUI::init</a>()
<a name="l00101"></a>00101     {
<a name="l00102"></a>00102     QVBoxLayout *groupboxcameraslayout,*groupboxblockslayout;
<a name="l00103"></a>00103     QMenu *menu_imagecanvas = NULL, *menu_glcanvas = NULL, *menu_qvplot = NULL;
<a name="l00104"></a>00104     <span class="keywordtype">bool</span> some_block = FALSE, some_camera = FALSE;
<a name="l00105"></a>00105 
<a name="l00106"></a>00106     <span class="comment">// We run through every qvApp property container and create the corresponding widgets and/or menus:</span>
<a name="l00107"></a>00107     <span class="keywordflow">foreach</span>(<a class="code" href="classQVPropertyContainer.html" title="Base class for dynamic property container objects.">QVPropertyContainer</a>* qvp, qvApp-&gt;getQVPropertyContainers())
<a name="l00108"></a>00108         {
<a name="l00109"></a>00109         <span class="comment">// QVProcessingBlocks (which are not QVVideoReaderBlocks):</span>
<a name="l00110"></a>00110         <a class="code" href="classQVProcessingBlock.html" title="Base class for Block threads.">QVProcessingBlock</a>* block;
<a name="l00111"></a>00111         <span class="keywordflow">if</span>(((block = dynamic_cast&lt;QVProcessingBlock*&gt;(qvp)) != NULL) and (dynamic_cast&lt;QVVideoReaderBlock*&gt;(qvp) == NULL))
<a name="l00112"></a>00112             {
<a name="l00113"></a>00113             <span class="keywordflow">if</span>(not some_block)
<a name="l00114"></a>00114                 {
<a name="l00115"></a>00115                 some_block = TRUE;
<a name="l00116"></a>00116                 groupboxblocks = <span class="keyword">new</span> QGroupBox(<span class="stringliteral">&quot;Blocks and windows&quot;</span>,<span class="keyword">this</span>);
<a name="l00117"></a>00117                 toolboxblocks = <span class="keyword">new</span> QToolBox(groupboxblocks);
<a name="l00118"></a>00118                 }
<a name="l00119"></a>00119             QVProcessingBlockInterfaceSmall *blockWidget = <span class="keyword">new</span> QVProcessingBlockInterfaceSmall(block,<span class="keyword">this</span>);
<a name="l00120"></a>00120             QVParamsInspectorWidget *qvparamsinspectorwidget = <span class="keyword">new</span> QVParamsInspectorWidget(block,<span class="keyword">this</span>);
<a name="l00121"></a>00121             QWidget *widget = <span class="keyword">new</span> QWidget(<span class="keyword">this</span>);
<a name="l00122"></a>00122             QVBoxLayout *vboxlayout2 = <span class="keyword">new</span> QVBoxLayout(widget);
<a name="l00123"></a>00123             vboxlayout2-&gt;setSpacing(0);
<a name="l00124"></a>00124             vboxlayout2-&gt;setMargin(0);
<a name="l00125"></a>00125             vboxlayout2-&gt;addWidget(blockWidget);
<a name="l00126"></a>00126             vboxlayout2-&gt;addWidget(qvparamsinspectorwidget);
<a name="l00127"></a>00127             toolboxblocks-&gt;addItem(widget,block-&gt;<a class="code" href="classQVPropertyContainer.html#a82e880a6c160f3780bc8f7b822fbbd85" title="Retrieves identifier QString of the object.">getName</a>());
<a name="l00128"></a>00128             <span class="comment">//qvparamsinspectorwidget-&gt;updateGeometry();</span>
<a name="l00129"></a>00129             <span class="keywordflow">continue</span>;
<a name="l00130"></a>00130             }
<a name="l00131"></a>00131         <span class="comment">// QVVideoReaderBlocks:</span>
<a name="l00132"></a>00132         <a class="code" href="classQVVideoReaderBlock.html" title="This is a generic video input processing block for the QVision architecture.">QVVideoReaderBlock</a>* camera;
<a name="l00133"></a>00133         <span class="keywordflow">if</span>((camera = dynamic_cast&lt;QVVideoReaderBlock*&gt;(qvp)) != NULL)
<a name="l00134"></a>00134             {
<a name="l00135"></a>00135             <span class="keywordflow">if</span>(not some_camera)
<a name="l00136"></a>00136                 {
<a name="l00137"></a>00137                 some_camera = TRUE;
<a name="l00138"></a>00138                 groupboxcameras = <span class="keyword">new</span> QGroupBox(<span class="stringliteral">&quot;Cameras&quot;</span>,<span class="keyword">this</span>);
<a name="l00139"></a>00139                 groupboxcameras-&gt;setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed);
<a name="l00140"></a>00140                 toolboxcameras = <span class="keyword">new</span> QToolBox(groupboxcameras);
<a name="l00141"></a>00141                 }
<a name="l00142"></a>00142             QVVideoReaderBlockWidget *cameraWidget = <span class="keyword">new</span> QVVideoReaderBlockWidget(camera,<span class="keyword">this</span>);
<a name="l00143"></a>00143             toolboxcameras-&gt;addItem(cameraWidget, camera-&gt;<a class="code" href="classQVPropertyContainer.html#a82e880a6c160f3780bc8f7b822fbbd85" title="Retrieves identifier QString of the object.">getName</a>());
<a name="l00144"></a>00144             <span class="keywordflow">continue</span>;
<a name="l00145"></a>00145             }
<a name="l00146"></a>00146         <span class="comment">// QVImageCanvas:</span>
<a name="l00147"></a>00147         <a class="code" href="classQVImageCanvas.html" title="Display widget for QVImage objects and other data types.">QVImageCanvas</a> *imageCanvas;
<a name="l00148"></a>00148         <span class="keywordflow">if</span>((imageCanvas = dynamic_cast&lt;QVImageCanvas*&gt;(qvp)) != NULL)
<a name="l00149"></a>00149             {
<a name="l00150"></a>00150             <span class="keywordflow">if</span>(menu_imagecanvas == NULL)
<a name="l00151"></a>00151                 menu_imagecanvas = windowmenu-&gt;addMenu(<span class="stringliteral">&quot;&amp;Image windows&quot;</span>);
<a name="l00152"></a>00152             QAction *action = menu_imagecanvas-&gt;addAction(imageCanvas-&gt;<a class="code" href="classQVPropertyContainer.html#a82e880a6c160f3780bc8f7b822fbbd85" title="Retrieves identifier QString of the object.">getName</a>());
<a name="l00153"></a>00153             action-&gt;setCheckable(TRUE);
<a name="l00154"></a>00154             action-&gt;setChecked(imageCanvas-&gt;isVisible());
<a name="l00155"></a>00155             connect(action,SIGNAL(toggled(<span class="keywordtype">bool</span>)),imageCanvas,SLOT(setVisible(<span class="keywordtype">bool</span>)));
<a name="l00156"></a>00156             connect(imageCanvas,SIGNAL(closed()),action,SLOT(toggle()));
<a name="l00157"></a>00157 
<a name="l00158"></a>00158             <span class="keywordflow">if</span>(not some_block)
<a name="l00159"></a>00159                 {
<a name="l00160"></a>00160                 some_block = TRUE;
<a name="l00161"></a>00161                 groupboxblocks = <span class="keyword">new</span> QGroupBox(<span class="stringliteral">&quot;Blocks and windows&quot;</span>,<span class="keyword">this</span>);
<a name="l00162"></a>00162                 toolboxblocks = <span class="keyword">new</span> QToolBox(groupboxblocks);
<a name="l00163"></a>00163                 }
<a name="l00164"></a>00164             QVParamsInspectorWidget *qvparamsinspectorwidget = <span class="keyword">new</span> QVParamsInspectorWidget(imageCanvas,<span class="keyword">this</span>);
<a name="l00165"></a>00165             QWidget *widget = <span class="keyword">new</span> QWidget(<span class="keyword">this</span>);
<a name="l00166"></a>00166             QVBoxLayout *vboxlayout2 = <span class="keyword">new</span> QVBoxLayout(widget);
<a name="l00167"></a>00167             vboxlayout2-&gt;setSpacing(0);
<a name="l00168"></a>00168             vboxlayout2-&gt;setMargin(0);
<a name="l00169"></a>00169             vboxlayout2-&gt;addWidget(qvparamsinspectorwidget);
<a name="l00170"></a>00170             toolboxblocks-&gt;addItem(widget,imageCanvas-&gt;<a class="code" href="classQVPropertyContainer.html#a82e880a6c160f3780bc8f7b822fbbd85" title="Retrieves identifier QString of the object.">getName</a>());
<a name="l00171"></a>00171             <span class="comment">//qvparamsinspectorwidget-&gt;updateGeometry();</span>
<a name="l00172"></a>00172 
<a name="l00173"></a>00173             <span class="keywordflow">continue</span>;
<a name="l00174"></a>00174             }
<a name="l00175"></a>00175 <span class="preprocessor">        #ifdef GSL_AVAILABLE</span>
<a name="l00176"></a>00176 <span class="preprocessor"></span>        <span class="comment">// QV3DCanvas:</span>
<a name="l00177"></a>00177         QV3DCanvas *glCanvas;
<a name="l00178"></a>00178         <span class="keywordflow">if</span>((glCanvas = dynamic_cast&lt;QV3DCanvas*&gt;(qvp)) != NULL)
<a name="l00179"></a>00179             {
<a name="l00180"></a>00180             <span class="keywordflow">if</span>(menu_glcanvas == NULL)
<a name="l00181"></a>00181                 menu_glcanvas = windowmenu-&gt;addMenu(<span class="stringliteral">&quot;&amp;OpenGL windows&quot;</span>);
<a name="l00182"></a>00182             QAction *action = menu_glcanvas-&gt;addAction(glCanvas-&gt;getName());
<a name="l00183"></a>00183             action-&gt;setCheckable(TRUE);
<a name="l00184"></a>00184             action-&gt;setChecked(glCanvas-&gt;isVisible());
<a name="l00185"></a>00185             connect(action,SIGNAL(toggled(<span class="keywordtype">bool</span>)),glCanvas,SLOT(setVisible(<span class="keywordtype">bool</span>)));
<a name="l00186"></a>00186             connect(glCanvas,SIGNAL(closed()),action,SLOT(toggle()));
<a name="l00187"></a>00187             <span class="keywordflow">continue</span>;
<a name="l00188"></a>00188             }
<a name="l00189"></a>00189 <span class="preprocessor">        #endif</span>
<a name="l00190"></a>00190 <span class="preprocessor"></span>        <span class="comment">// QVPlots:</span>
<a name="l00191"></a>00191         <a class="code" href="classQVPlot.html" title="Class for plot block&amp;#39;s graphs.">QVPlot</a> *qvplot;
<a name="l00192"></a>00192         <span class="keywordflow">if</span>((qvplot = dynamic_cast&lt;QVPlot*&gt;(qvp)) != NULL)
<a name="l00193"></a>00193             {
<a name="l00194"></a>00194             <span class="keywordflow">if</span>(menu_qvplot == NULL)
<a name="l00195"></a>00195                 menu_qvplot = windowmenu-&gt;addMenu(<span class="stringliteral">&quot;&amp;Plot windows&quot;</span>);
<a name="l00196"></a>00196             QAction *action = menu_qvplot-&gt;addAction(qvplot-&gt;getName());
<a name="l00197"></a>00197             action-&gt;setCheckable(TRUE);
<a name="l00198"></a>00198             <span class="comment">//FIXME:  It should be: action-&gt;setChecked(qvplot-&gt;isVisible());</span>
<a name="l00199"></a>00199             <span class="comment">// but, for any reason, qvplots are not shown until later (ask Antonio)</span>
<a name="l00200"></a>00200             action-&gt;setChecked(TRUE);
<a name="l00201"></a>00201             connect(action,SIGNAL(toggled(<span class="keywordtype">bool</span>)),qvplot,SLOT(setVisible(<span class="keywordtype">bool</span>)));
<a name="l00202"></a>00202             connect(qvplot,SIGNAL(closed()),action,SLOT(toggle()));
<a name="l00203"></a>00203             <span class="keywordflow">continue</span>;
<a name="l00204"></a>00204             }
<a name="l00205"></a>00205         }
<a name="l00206"></a>00206 
<a name="l00207"></a>00207     vboxlayout-&gt;setSpacing(5);
<a name="l00208"></a>00208     vboxlayout-&gt;setMargin(5);
<a name="l00209"></a>00209     vboxlayout-&gt;addWidget(menubar);
<a name="l00210"></a>00210 
<a name="l00211"></a>00211     <span class="keywordflow">if</span>(some_block)
<a name="l00212"></a>00212         {
<a name="l00213"></a>00213         groupboxblockslayout = <span class="keyword">new</span> QVBoxLayout(groupboxblocks);
<a name="l00214"></a>00214         groupboxblockslayout-&gt;addWidget(toolboxblocks);
<a name="l00215"></a>00215         vboxlayout-&gt;addWidget(groupboxblocks);
<a name="l00216"></a>00216         }
<a name="l00217"></a>00217 
<a name="l00218"></a>00218     <span class="keywordflow">if</span>(some_camera)
<a name="l00219"></a>00219         {
<a name="l00220"></a>00220         groupboxcameraslayout = <span class="keyword">new</span> QVBoxLayout(groupboxcameras);
<a name="l00221"></a>00221         groupboxcameraslayout-&gt;addWidget(toolboxcameras);
<a name="l00222"></a>00222         vboxlayout-&gt;addWidget(groupboxcameras);
<a name="l00223"></a>00223         }
<a name="l00224"></a>00224 
<a name="l00225"></a>00225     }
<a name="l00226"></a>00226 
<a name="l00227"></a>00227 <span class="keywordtype">void</span> <a class="code" href="classQVGUI.html#aeda9d300364e3f709b6ba1aaf76efcd3" title="show the QVGUI object.">QVDefaultGUI::show</a>()
<a name="l00228"></a>00228     {
<a name="l00229"></a>00229     <a class="code" href="classQVGUI.html#aeda9d300364e3f709b6ba1aaf76efcd3" title="show the QVGUI object.">QWidget::show</a>();
<a name="l00230"></a>00230     }
<a name="l00231"></a>00231 
<a name="l00232"></a>00232 <span class="keywordtype">void</span> QVDefaultGUI::closeEvent(QCloseEvent *event)
<a name="l00233"></a>00233     {
<a name="l00234"></a>00234     Q_UNUSED(event);
<a name="l00235"></a>00235     qvApp-&gt;deregisterGUI();
<a name="l00236"></a>00236     emit closed();
<a name="l00237"></a>00237     }
</pre></div></div>
</td></tr></table>

<br /><hr><br />
<center><a href="http://perception.inf.um.es/QVision">QVision framework</a>.
<a href="http://perception.inf.um.es">PARP research group</a>.
Copyright &copy; 2007, 2008, 2009, 2010, 2011.</center>
<br />
</body>
</html>
